﻿// 5037. 区间异或.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>

/*

https://www.acwing.com/problem/content/5040/
给定一个长度为 n
 的整数数组 a1,a2,…,an
。

你需要依次执行 m
 个操作，操作分为以下两种：

1 l r，求和操作，你需要计算并输出 al+al+1+…+ar
 的值。
2 l r x，异或操作，你需要令 al=al⊕x,al+1=al+1⊕x,…,ar=ar⊕x
。其中 ⊕
 指按位异或。
输入格式
第一行包含整数 n
。

第二行包含 n
 个整数 a1,a2,…,an
。

第三行包含整数 m
。

接下来 m
 行，每行包含一个操作指令，格式如题面描述。

输出格式
每个求和操作输出一行结果，一个整数，表示 al+al+1+…+ar
 的值。

数据范围
前 6
 个测试点满足 1≤n,m≤20
。
所有测试点满足 1≤n≤105
，1≤m≤50000
，0≤ai≤106
，1≤l≤r≤n
，1≤x≤106
。

输入样例1：
5
4 10 3 13 7
8
1 2 4
2 1 3 3
1 2 4
1 3 3
2 2 5 5
1 1 5
2 1 2 10
1 2 3
输出样例1：
26
22
0
34
11
输入样例2：
6
4 7 4 0 7 3
5
2 2 3 8
1 1 5
2 3 5 1
2 4 5 6
1 2 3
输出样例2：
38
28
*/
int main()
{
    std::cout << "Hello World!\n";
}

 